/*
 * @lc app=leetcode.cn id=20 lang=javascript
 *
 * [20] 有效的括号
 */

// @lc code=start
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    // 1. 新建一个栈
    // 2. 扫描字符串 遇到左括号入栈，遇到和栈顶括号类型匹配的右括号就直接出栈，类型不匹配就直接判定为不合法
    // 3. 最后栈空了就代表合法
    if (s.length % 2 === 1) return false;
    const stack = [];
    let map = {
        "(":")",
        "{":"}",
        "[":"]"
    }
    for (let i = 0; i < s.length; i++) {
        const c = s[i];
        if (map[c]) {
            stack.push(c);
        } else { 
            const t = stack[stack.length - 1];
            if (
                c === map[t]
            ) {
                stack.pop()
            } else { 
                return false
            }
        }
    }
    return stack.length === 0;
};
// @lc code=end

